﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Datos;
using Negocio.catalogos;
using Negocio.clases_tontas;

namespace Negocio.catalogos
{
    public class catalogoEstudiante
    {
                     
        /// <summary>
        /// Método para obtener la lista de estudiantes de una Distribucion
        /// </summary>
        /// <param name="_idDistribucion">Codigo de la distribucion</param>
        /// <returns>Listado de los estudiantes</returns>
        public List<estudiante> obtenerEstudiante(int _idDistribucion)
        {
            servicioEstudiante.EstudiantesServicioSoapClient _objServicioEstudiante = new servicioEstudiante.EstudiantesServicioSoapClient();
            List<estudiante> _objtListaEstudiante = new List<estudiante>();

            foreach (var item in _objServicioEstudiante.ListaEstudiantesDistribucion(_idDistribucion).OrderBy(x => x.Apellido_1))
            {
                _objtListaEstudiante.Add(new estudiante(item.Id_Alumno, item.Nombres, item.Apellido_1 + " " + item.Apellido_2, ((int)item.Cod_Distribucion)));
            }
            return _objtListaEstudiante;
        }

        /// <summary>
        /// Metodo para obtener un registro de un estudiante mediante su codigo
        /// </summary>
        /// <param name="_idEstudiante">Codigo de Estudiante</param>
        /// <returns>Registro de Estudiante</returns>
        public List<estudiante> obtenerEstudianteXID(int _idEstudiante)
        {
            servicioEstudiante.EstudiantesServicioSoapClient _objServicioEstudiante = new servicioEstudiante.EstudiantesServicioSoapClient();
            List<estudiante> _objtListaEstudiante = new List<estudiante>();

            var resultEstudiantes = _objServicioEstudiante.ObtenerEstudiantesId(_idEstudiante);
            try
            {
                foreach (var item in resultEstudiantes)
                {
                    _objtListaEstudiante.Add(new estudiante(item.Id_Alumno, item.Nombres, item.Carrera, ((int)item.Semestre),item.Cedula));
                }
                return _objtListaEstudiante;
            }
            catch (Exception)
            {
                return _objtListaEstudiante;
            }
            
        }
       
        /// <summary>
        /// METODO PARA OBTENER ESTUDIANTE POR CEDULA
        /// </summary>
        /// <param name="_ced">cedula del estudiante</param>
        /// <returns>returna un estudiante por su cedula</returns>
        public List<estudiante> obtenerEstudianteXCED(string _ced)
        {
            servicioEstudiante.EstudiantesServicioSoapClient _objServicioEstudiante = new servicioEstudiante.EstudiantesServicioSoapClient();
            List<estudiante> _objtListaEstudiante = new List<estudiante>();

            var resultEstudiante = _objServicioEstudiante.ObtenerEstudiantesCedula(_ced);
            try
            {
                foreach (var item in resultEstudiante)
                {
                    _objtListaEstudiante.Add(new estudiante(item.Id_Alumno, item.Nombres, item.Carrera, ((int)item.Semestre),item.Cedula));
                }
                return _objtListaEstudiante;
            }
            catch (Exception)
            {
                return _objtListaEstudiante;
            }

        }
        public List<perdidos> obtenerEstudiantesPerdidos(int _carrera, int _periodo, int _porcentaje)
        {
            ControlAsistenciaEntities _obj = new ControlAsistenciaEntities();
            List<perdidos> _objtListaEstudiante = new List<perdidos>();

            var resultEstudiante = _obj.procconsultarAsistenciaXEstudiantesPerdidos(_carrera, _periodo, _porcentaje);
            try
            {
                foreach (var item in resultEstudiante)
                {
                    _objtListaEstudiante.Add(new perdidos { Alumno = item.Alumno, Materia = item.Materia, Asistencia = item.Asistencia, faltas = item.faltas, Mes = item.Mes, Orden = item.Orden, porcFaltas = item.porcFaltas });
                }
                return _objtListaEstudiante;
            }
            catch (Exception)
            {
                return _objtListaEstudiante;
            }
        }


    }
}
